CSS View Transitions์ ์ฑ๋ฅ์ ๋ํ ์ฌ์ธต ๋ถ์์ผ๋ก, ์ ํ ์์ ์ฒ๋ฆฌ ์๋์ ๋ถ๋๋ฝ๊ณ ํจ์จ์ ์ธ ์ ๋๋ฉ์ด์ ์ ์ํ ์ต์ ํ ๊ธฐ์ ์ ์ค์ ์ ๋ก๋๋ค.
CSS View Transition ์์ฌ ์์ ์ฑ๋ฅ: ์ ํ ์์ ์ฒ๋ฆฌ ์๋
CSS View Transitions๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ํ ๊ฐ์ ๋ถ๋๋ฝ๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์ ํ์ ์์ฑํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ ๋๋ฉ์ด์ ๊ธฐ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฑ๋ฅ์ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค. ์ด ๊ธ์์๋ CSS View Transitions์ ์ฑ๋ฅ ์ธก๋ฉด, ํนํ ์ ํ ์์์ ์ฒ๋ฆฌ ์๋์ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํ ์ ๋๋ฉ์ด์ ์ต์ ํ ์ ๋ต์ ๋ํด ์์ธํ ์์๋ด ๋๋ค.
CSS View Transitions ์ดํดํ๊ธฐ
์ฑ๋ฅ์ ๋ํด ์์๋ณด๊ธฐ ์ ์ CSS View Transitions์ ๊ธฐ๋ณธ ์ฌํญ์ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ์ ํ์ ๋ณ๊ฒฝ ์ ํ ํ์ด์ง ์์์ ์๊ฐ์ ์ํ๋ฅผ ์บก์ฒํ ๋ค์ ํด๋น ์ํ ๊ฐ์ ์ฐจ์ด์ ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA) ๋ด์์ ๋ค๋ฅธ ํ์ด์ง๋ ์น์ ๊ฐ์ ์ ๋์ ์ธ ์ ํ์ด ๊ฐ๋ฅํฉ๋๋ค.
CSS View Transition์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
view-transition-name์์ฑ: ์ด CSS ์์ฑ์ ๋ทฐ ์ ํ์ ์ฐธ์ฌํด์ผ ํ๋ ์์๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋์ผํview-transition-name์ ๊ฐ์ง ์์๋ ์ฝํ ์ธ ๋ ์์น๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ์ ํ ์ ๋ฐ์ ๊ฑธ์ณ ๋์ผํ ์์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.document.startViewTransition()API: ์ด JavaScript API๋ ๋ทฐ ์ ํ์ ์์ํฉ๋๋ค. DOM์ ์๋ก์ด ์ํ๋ก ์ ๋ฐ์ดํธํ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค.::view-transition์์ฌ ์์: ์ด ์์ฌ ์์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ์ ํ ์ปจํ ์ด๋์ ๊ทธ ์์ ์์ฌ ์์์ ์คํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค.::view-transition-image-pair์์ฌ ์์: ์ ํ์ ์ฐธ์ฌํ๋ ์์์ ์ด์ ์ด๋ฏธ์ง์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ์ปจํ ์ด๋๋ฅผ ๋ํ๋ ๋๋ค.::view-transition-old(view-transition-name)์์ฌ ์์: ์์์ "์ด์ " ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ ๋๋ค.::view-transition-new(view-transition-name)์์ฌ ์์: ์์์ "์ดํ" ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ ๋๋ค.
์ด๋ฌํ ์์ฌ ์์์ ์คํ์ผ์ ์ ์ฉํ์ฌ ์ ๋๋ฉ์ด์ , ํฌ๋ช ๋, ๋ณํ ๋ฑ ์ ํ์ ๋ชจ์๊ณผ ๋์์ ์ ์ดํ ์ ์์ต๋๋ค.
์ ํ ์์ ์ฒ๋ฆฌ ์๋์ ์ค์์ฑ
์ ํ ์์์ ์ฒ๋ฆฌ ์๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค:
- ์ํฌ(Jank): ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํดํ๋ ๋ฒ๋ฒ ๊ฑฐ๋ฆฌ๊ฑฐ๋ ๊ณ ๋ฅด์ง ์์ ์ ๋๋ฉ์ด์ .
- ์ง์ฐ๋ ์ ํ: ์ ํ์ด ์์๋๊ธฐ ์ ์ ๋์ ๋๋ ๋ฉ์ถค ํ์.
- CPU ์ฌ์ฉ๋ ์ฆ๊ฐ: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์์ ๋ฐฐํฐ๋ฆฌ ์๋ชจ ์ฆ๊ฐ.
- SEO์ ๋ถ์ ์ ์ธ ์ํฅ: ๋ฎ์ ์ฑ๋ฅ์ ์น์ฌ์ดํธ์ ๊ฒ์ ์์ง ์์์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ํ ์์์ ์ฒ๋ฆฌ ์๋๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ฒ๋ฆฌ ์ค๋ฒํค๋์ ๊ธฐ์ฌํ๋ ์์๋ฅผ ์ดํดํ๊ณ ์ด๋ฅผ ์ต์ํํ๋ ์ ๋ต์ ๊ตฌํํด์ผ ํฉ๋๋ค.
์ ํ ์์ ์ฒ๋ฆฌ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ
์ฌ๋ฌ ์์ธ์ด ์ ํ ์์์ ์ฒ๋ฆฌ ์๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค:
1. ์ ํ ์์์ ์
๋ทฐ ์ ํ์ ์ฐธ์ฌํ๋ ์์๊ฐ ๋ง์์๋ก ๋ ๋ง์ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๊ฐ ์์๋ฅผ ์บก์ฒ, ๋น๊ต, ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ์ ์ฒด์ ์ธ ๊ณ์ฐ ๋น์ฉ์ด ์ฆ๊ฐํฉ๋๋ค. ๋ง์ ์์๋ฅผ ํฌํจํ๋ ๋ณต์กํ ์ ํ์ ๋จ ๋ช ๊ฐ์ ์์๋ง ์๋ ๊ฐ๋จํ ์ ํ๋ณด๋ค ์ฒ๋ฆฌํ๋ ๋ฐ ๋น์ฐํ ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
์์: ์ด ํ๋งค ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋์๋ณด๋์ ๊ฐ๋ณ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ํ์ํ๋ ๋์๋ณด๋ ๊ฐ์ ์ ํ์ ์์ํด ๋ณด์ธ์. ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ(์: ํ๋งค ์์น, ๊ณ ๊ฐ ์ด๋ฆ)์ view-transition-name์ด ํ์๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ ์ฌ์ ์ผ๋ก ์๋ฐฑ ๊ฐ์ ๊ฐ๋ณ ์์๋ฅผ ์ถ์ ํ๊ณ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ด๋ ๋งค์ฐ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋ชจํ ์ ์์ต๋๋ค.
2. ์ ํ ์์์ ํฌ๊ธฐ์ ๋ณต์ก์ฑ
๋ ํฌ๊ณ ๋ณต์กํ ์์๋ ๋ ๋ง์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์๋ก ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํฝ์ ๋จ์์ ์์ ํฌ๊ธฐ๋ฟ๋ง ์๋๋ผ ์ฝํ ์ธ ์ ๋ณต์ก์ฑ(์: ์ค์ฒฉ๋ ์์, ์ด๋ฏธ์ง, ํ ์คํธ)๋ ํฌํจ๋ฉ๋๋ค. ํฐ ์ด๋ฏธ์ง๋ ๋ณต์กํ SVG ๊ทธ๋ํฝ์ ํฌํจํ๋ ์ ํ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋จํ ํ ์คํธ ์์๋ฅผ ํฌํจํ๋ ์ ํ๋ณด๋ค ๋๋ฆฝ๋๋ค.
์์: ๋ณต์กํ ์๊ฐ ํจ๊ณผ(์: ๋ธ๋ฌ, ๊ทธ๋ฆผ์)๊ฐ ์๋ ํฐ ํ์ด๋ก ์ด๋ฏธ์ง์ ์ ํ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋๋ ๊ฒ์ ์์ ํ ์คํธ ๋ ์ด๋ธ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค.
3. CSS ์คํ์ผ์ ๋ณต์ก์ฑ
์ ํ ์์์ ์ ์ฉ๋ CSS ์คํ์ผ์ ๋ณต์ก์ฑ๋ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ(reflow)๋ ๋ฆฌํ์ธํธ(repaint)๋ฅผ ์ ๋ฐํ๋ ์คํ์ผ์ ํนํ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ width, height, margin, padding, position๊ณผ ๊ฐ์ ์์ฑ์ด ํฌํจ๋ฉ๋๋ค. ์ ํ ์ค์ ์ด๋ฌํ ์์ฑ์ ๋ณ๊ฒฝํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๊ณ ์ํฅ์ ๋ฐ๋ ์์๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํ๋ฏ๋ก ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์์: ๋ง์ ์์ ํ
์คํธ๋ฅผ ํฌํจํ๋ ์์์ width๋ฅผ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค๋ฉด ํ
์คํธ๊ฐ ์ ๋๋น์ ๋ง๊ฒ ๋ฆฌํ๋ก์ฐ๋์ด์ผ ํ๋ฏ๋ก ์๋นํ ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์์น๊ฐ ์ง์ ๋ ์์์ top ์์ฑ์ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค๋ฉด ํด๋น ์์์ ๊ทธ ์์๋ค์ ๋ค์ ๊ทธ๋ ค์ผ ํ๋ฏ๋ก ๋ฆฌํ์ธํธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
4. ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์์ง
๋ธ๋ผ์ฐ์ ์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๋ฐ๋ผ CSS View Transitions์ ๋ํ ์ต์ ํ ์์ค์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ ๋๋ง ์์ง์ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ ๋ณต์กํ ์ ๋๋ฉ์ด์ ์ ๋ ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ํ๋์จ์ด ๊ฐ์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
์์: Chrome์์ ์ ์๋ํ๋ ์ ํ์ด Safari๋ Firefox์์๋ ๋ ๋๋ง ์์ง์ ์ฐจ์ด๋ก ์ธํด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ณด์ผ ์ ์์ต๋๋ค.
5. ํ๋์จ์ด ์ฑ๋ฅ
์ ํ์ด ์คํ๋๋ ๊ธฐ๊ธฐ์ ํ๋์จ์ด ์ฑ๋ฅ ๋ํ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํ๋ก์ธ์๊ฐ ๋๋ฆฌ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ ๊ธฐ๊ธฐ๋ ๋ณต์กํ ์ ํ์ ์ํํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ๊ฒ์ ๋๋ค. ์ด๋ ์ข ์ข ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ํนํ ์ค์ํ๊ฒ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋๋ค.
์์: ๊ฐ๋ ฅํ GPU๋ฅผ ๊ฐ์ถ ๊ณ ์ฌ์ ๋ฐ์คํฌํฑ ์ปดํจํฐ๋ ์ฑ๋ฅ์ด ๋ฎ์ ํ๋ก์ธ์๋ฅผ ๊ฐ์ง ์ ์ฌ์ ์ค๋งํธํฐ๋ณด๋ค ๋ณต์กํ ๋ทฐ ์ ํ์ ํจ์ฌ ๋ ๋ถ๋๋ฝ๊ฒ ์ฒ๋ฆฌํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
6. JavaScript ์คํ
document.startViewTransition() ์ฝ๋ฐฑ ๋ด์์ JavaScript ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ๋ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ฝ๋ฐฑ์ด ๋ณต์กํ DOM ์กฐ์์ด๋ ๊ณ์ฐ์ ์ํํ๋ฉด ์ ํ ์์์ด ์ง์ฐ๋๊ฑฐ๋ ์ ๋๋ฉ์ด์
์ค์ ์ํฌ(jank)๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฝ๋ฐฑ ๋ด์ ์ฝ๋๋ฅผ ๊ฐ๋ฅํ ํ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์์: ์ฝ๋ฐฑ ํจ์๊ฐ ๋ค์์ AJAX ์์ฒญ์ด๋ ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ฉด ๋ทฐ ์ ํ ์์์ด ํฌ๊ฒ ์ง์ฐ๋ ์ ์์ต๋๋ค.
์ ํ ์์ ์ฒ๋ฆฌ ์๋ ์ต์ ํ ์ ๋ต
๋ค์์ ์ ํ ์์์ ์ฒ๋ฆฌ ์๋๋ฅผ ์ต์ ํํ๊ณ ๋ถ๋๋ฝ๊ณ ํจ์จ์ ์ธ ์ ๋๋ฉ์ด์ ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์ ๋ต์ ๋๋ค:
1. ์ ํ ์์ ์ ์ต์ํํ๊ธฐ
์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ข
์ข
๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ ํ์ ์ฐธ์ฌํ๋ ์์์ ์๋ฅผ ์ค์ด๋ ๊ฒ์
๋๋ค. ๋ชจ๋ ์์๋ฅผ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค์ด์ผ ํ๋์ง, ์๋๋ฉด ์๊ฐ์ ๋งค๋ ฅ์ ํฌ๊ฒ ํด์น์ง ์์ผ๋ฉด์ ์ผ๋ถ๋ฅผ ์ ์ธํ ์ ์๋์ง ๊ณ ๋ คํด ๋ณด์ธ์. ์กฐ๊ฑด๋ถ ๋ก์ง์ ์ฌ์ฉํ์ฌ ์ ๋ง๋ก ์ ๋๋ฉ์ด์
์ด ํ์ํ ์์์๋ง view-transition-name์ ์ ์ฉํ ์ ์์ต๋๋ค.
์์: ๋ชฉ๋ก์ ๋ชจ๋ ๊ฐ๋ณ ํญ๋ชฉ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋๋ ๋์ ์ปจํ ์ด๋ ์์๋ง ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ฒ๋ฆฌํด์ผ ํ ์์์ ์๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
2. ์ ํ ์์ ์ฝํ ์ธ ๋จ์ํํ๊ธฐ
์ ํ์ ์ง๋์น๊ฒ ๋ณต์กํ๊ฑฐ๋ ํฐ ์์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์. ์ ํ ์์์ ์ฝํ ์ธ ๋ฅผ ์ต๋ํ ๋จ์ํํ์ธ์. ์ฌ๊ธฐ์๋ ์ค์ฒฉ๋ ์์์ ์๋ฅผ ์ค์ด๊ณ , ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๊ณ , ํจ์จ์ ์ธ CSS ์คํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๋ฒกํฐ ๊ทธ๋ํฝ(SVG)์ ์ผ๋ฐ์ ์ผ๋ก ํฌ๊ธฐ ์กฐ์ ๋ฐ ์ ๋๋ฉ์ด์ ์ ๋ ์ฑ๋ฅ์ด ์ข์ผ๋ฏ๋ก ์ ์ ํ ๊ฒฝ์ฐ ๋์คํฐ ์ด๋ฏธ์ง ๋์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
์์: ์ด๋ฏธ์ง๋ฅผ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋๋ ๊ฒฝ์ฐ ์ ์ ํ ํฌ๊ธฐ๋ก ์กฐ์ ๋๊ณ ์์ถ๋์๋์ง ํ์ธํ์ธ์. ๋ถํ์ํ๊ฒ ํฐ ์ด๋ฏธ์ง๋ ์ฒ๋ฆฌํ๊ณ ๋ ๋๋งํ๋ ๋ฐ ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก ์ฌ์ฉ์ ํผํ์ธ์.
3. ๋ ์ด์์ ์ ๋ฐ ์์ฑ ๋์ CSS ๋ณํ(Transforms) ๋ฐ ํฌ๋ช ๋(Opacity) ์ฌ์ฉํ๊ธฐ
์์ ์ธ๊ธํ๋ฏ์ด width, height, margin, padding๊ณผ ๊ฐ์ ์์ฑ์ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค๋ฉด ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ๊ฐ ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋์ CSS ๋ณํ(์: translate, scale, rotate)๊ณผ ํฌ๋ช
๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋๋ฉ์ด์
์ ๋ง๋๋ ๊ฒ์ ์ ํธํ์ธ์. ์ด๋ฌํ ์์ฑ์ ์ผ๋ฐ์ ์ผ๋ก GPU์์ ์ฒ๋ฆฌ๋ ์ ์์ด CPU์ ๋ถํ๋ฅผ ์ค์ฌ์ฃผ๋ฏ๋ก ์ฑ๋ฅ์ด ๋ ์ข์ต๋๋ค.
์์: ํฌ๊ธฐ ์กฐ์ ํจ๊ณผ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์์ width๋ฅผ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋๋ ๋์ scaleX ๋ณํ์ ์ฌ์ฉํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋์ผํ ์๊ฐ์ ํจ๊ณผ๋ฅผ ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ์ผ๋ก ์ป์ ์ ์์ต๋๋ค.
4. `will-change` ์์ฑ ํ์ฉํ๊ธฐ
will-change CSS ์์ฑ์ ์ฌ์ฉํ๋ฉด ์์๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์์์ ๋ธ๋ผ์ฐ์ ์ ๋ฏธ๋ฆฌ ์๋ฆด ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ ์ ๋๋ฉ์ด์
์ ์ํด ์์๋ฅผ ์ต์ ํํ ๊ธฐํ๋ฅผ ์ป๊ฒ ๋์ด ์ ์ฌ์ ์ผ๋ก ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ์์๋๋ ์์ฑ(์: transform, opacity, scroll-position)์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ will-change๋ฅผ ๋จ์ฉํ๋ฉด ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์์: ์์์ transform ์์ฑ์ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ง๋ค ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด ๋ค์ CSS ๊ท์น์ ์ถ๊ฐํ ์ ์์ต๋๋ค:
.element { will-change: transform; }
5. DOM ์ ๋ฐ์ดํธ ๋๋ฐ์ด์ฑ(Debounce) ๋๋ ์ค๋กํ๋ง(Throttle)ํ๊ธฐ
document.startViewTransition() ์ฝ๋ฐฑ์ ๋น๋ฒํ DOM ์
๋ฐ์ดํธ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋๋ฐ์ด์ฑ์ด๋ ์ค๋กํ๋ง๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธ ํ์๋ฅผ ์ ํํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ๋๋ฐ์ด์ฑ์ ์ผ์ ์๊ฐ ๋์ ํ๋์ด ์์ ๋๋ง ์ฝ๋ฐฑ์ด ์คํ๋๋๋ก ๋ณด์ฅํ๋ ๋ฐ๋ฉด, ์ค๋กํ๋ง์ ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์ฝ๋ฐฑ์ด ์คํ๋๋ ํ์๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๋ธ๋ผ์ฐ์ ์ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์์: ์ฌ์ฉ์ ์ ๋ ฅ(์: ๊ฒ์ ์์์ ์ ๋ ฅ)์ ๊ธฐ๋ฐ์ผ๋ก DOM์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ์งง์ ์๊ฐ ๋์ ํ์ดํ์ ๋ฉ์ถ ํ์๋ง ์ ๋ฐ์ดํธ๊ฐ ์ํ๋๋๋ก ์ ๋ฐ์ดํธ๋ฅผ ๋๋ฐ์ด์ฑํ์ธ์.
6. JavaScript ์ฝ๋ ์ต์ ํํ๊ธฐ
document.startViewTransition() ์ฝ๋ฐฑ ๋ด์ JavaScript ์ฝ๋๊ฐ ๊ฐ๋ฅํ ํ ํจ์จ์ ์ธ์ง ํ์ธํ์ธ์. ๋ถํ์ํ ๊ณ์ฐ์ด๋ DOM ์กฐ์์ ํผํ์ธ์. ์ ์ ํ ๊ฒฝ์ฐ ์ต์ ํ๋ ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ธ์. JavaScript ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
์์: ํฐ ๋ฐ์ดํฐ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๊ฒฝ์ฐ forEach ๋ฃจํ ๋์ for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ธ์. for ๋ฃจํ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฑ๋ฅ์ด ์ข์ต๋๋ค.
7. ํ๋์จ์ด ๊ฐ์ ์ฌ์ฉํ๊ธฐ
๋ธ๋ผ์ฐ์ ์์ ํ๋์จ์ด ๊ฐ์์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํ์ธ์. ํ๋์จ์ด ๊ฐ์์ GPU๋ฅผ ํ์ฉํ์ฌ ์ ๋๋ฉ์ด์ ์ ์ํํ๋ฏ๋ก ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์จ์ด ๊ฐ์์ด ํ์ฑํ๋์ด ์์ง๋ง, ๋นํ์ฑํ๋์ด ์์ง ์์์ง ํ์ธํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์์: Chrome์์๋ chrome://gpu๋ก ์ด๋ํ์ฌ ํ๋์จ์ด ๊ฐ์์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ค์ํ ๊ทธ๋ํฝ ๊ธฐ๋ฅ์ ๋ํ "Hardware accelerated" ์ํ๋ฅผ ์ฐพ์๋ณด์ธ์.
8. ์ฌ๋ฌ ๊ธฐ๊ธฐ ๋ฐ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํ๊ธฐ
๋ค์ํ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์์ ๋ทฐ ์ ํ์ ์ฒ ์ ํ ํ ์คํธํ์ฌ ์ฌ๋ฌ ํ๋ซํผ์์ ์ ์๋ํ๋์ง ํ์ธํ์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ๊ฐ์ ํ ๋ถ๋ถ์ ์๋ณํ์ธ์. ํนํ ๋ฆฌ์์ค๊ฐ ์ ํ์ ์ธ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์.
์์: Chrome, Firefox, Safari, Edge๋ฟ๋ง ์๋๋ผ ํ๋์จ์ด ์ฑ๋ฅ์ด ๋ค๋ฅธ ๋ค์ํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ์ ํ์ ํ ์คํธํ์ธ์.
9. CSS Containment ์ฌ์ฉ ๊ณ ๋ คํ๊ธฐ
CSS contain ์์ฑ์ DOM ํธ๋ฆฌ์ ์ผ๋ถ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์์์ contain: content; ๋๋ contain: layout;์ ์ ์ฉํ๋ฉด ํด๋น ์์ ๋ด์ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์ด์ง์ ๋๋จธ์ง ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น์ง ์์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฆด ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ ๋ถํ์ํ ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ ๋ฐ ๋ฆฌํ์ธํธ๋ฅผ ํผํ์ฌ ๋ ๋๋ง์ ์ต์ ํํ ์ ์์ต๋๋ค.
์์: ๊ธฐ๋ณธ ์ฝํ
์ธ ์์ญ๊ณผ ๋
๋ฆฝ์ ์ธ ์ฌ์ด๋๋ฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ์ด๋๋ฐ์ contain: content;๋ฅผ ์ ์ฉํ์ฌ ๋ ๋๋ง์ ๊ฒฉ๋ฆฌํ ์ ์์ต๋๋ค.
10. ์ ์ง์ ํฅ์(Progressive Enhancement) ์ฌ์ฉํ๊ธฐ
CSS View Transitions๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ํด๋ฐฑ(fallback)์ ์ ๊ณตํ๋ ์ ์ง์ ํฅ์ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์ด๋ ๋ทฐ ์ ํ ์์ด ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ๋ฒ์ ์ ๋ง๋ ๋ค์, ์ด๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ์ ์ง์ ์ผ๋ก ๋ทฐ ์ ํ์ผ๋ก ํฅ์์ํค๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
์์: JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ document.startViewTransition() API๋ฅผ ์ง์ํ๋์ง ๊ฐ์งํ ์ ์์ต๋๋ค. ์ง์ํ๋ ๊ฒฝ์ฐ ๋ทฐ ์ ํ์ ์ฌ์ฉํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ ๊ฐ๋จํ ์ ๋๋ฉ์ด์
๊ธฐ์ ์ ์ฌ์ฉํ๊ฑฐ๋ ์ ๋๋ฉ์ด์
์ ์ ํ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
์ ํ ์์ ์ฒ๋ฆฌ ์๋ ์ธก์ ํ๊ธฐ
์ ํ ์์ ์ฒ๋ฆฌ ์๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ต์ ํํ๋ ค๋ฉด ์ด๋ฅผ ์ ํํ๊ฒ ์ธก์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ค์์ CSS View Transitions์ ์ฑ๋ฅ์ ์ธก์ ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๊ธฐ์ ์ ๋๋ค:
1. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ
๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ ฅํ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ, ๋ฆฌํ์ธํธ, JavaScript ์คํ์ ํฌํจํ์ฌ ๋ทฐ ์ ํ ์ค์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ํ์๋ผ์ธ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ฝ๋๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค.
์์: Chrome์์๋ ๊ฐ๋ฐ์ ๋๊ตฌ์ Performance ํจ๋์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ํ์๋ผ์ธ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋๋ง ๋ฐ JavaScript ์คํ์ ์์๋ ์๊ฐ์ ํฌํจํ์ฌ ๊ฐ ์์ ์ด ์คํ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
2. ์ฑ๋ฅ ์งํ
CSS View Transitions์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ฑ๋ฅ ์งํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ด๋น ํ๋ ์ ์(FPS): ์ ๋๋ฉ์ด์ ์ด ์ผ๋ง๋ ๋ถ๋๋ฝ๊ฒ ์คํ๋๋์ง๋ฅผ ๋ํ๋ด๋ ์ฒ๋์ ๋๋ค. FPS๊ฐ ๋์์๋ก ์ ๋๋ฉ์ด์ ์ด ๋ ๋ถ๋๋ฝ์ต๋๋ค. ์ผ๊ด๋ 60 FPS๋ฅผ ๋ชฉํ๋ก ํ์ธ์.
- ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ: ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํด์ผ ํ๋ ํ์์ ๋๋ค. ๋ ์ด์์ ๋ฆฌํ๋ก์ฐ๊ฐ ์ ์์๋ก ์ฑ๋ฅ์ด ์ข์ต๋๋ค.
- ๋ฆฌํ์ธํธ: ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํ๋ ํ์์ ๋๋ค. ๋ฆฌํ์ธํธ๊ฐ ์ ์์๋ก ์ฑ๋ฅ์ด ์ข์ต๋๋ค.
- CPU ์ฌ์ฉ๋: ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉํ๋ CPU ๋ฆฌ์์ค์ ๋น์จ์ ๋๋ค. CPU ์ฌ์ฉ๋์ด ๋ฎ์์๋ก ์ฑ๋ฅ์ด ์ข๊ณ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ด ๊น๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ ์ ํ ์ค ์ด๋ฌํ ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
3. ์ฌ์ฉ์ ์ง์ ์ฑ๋ฅ ํ์ด๋ฐ
Performance API๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ ์ ํ์ ํน์ ๋ถ๋ถ์ ์์๋๋ ์๊ฐ์ ์ธก์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ฑ๋ฅ์ ๋ํ ๋ ์ธ๋ถํ๋ ๋ทฐ๋ฅผ ์ป์ ์ ์์ต๋๋ค. performance.mark() ๋ฐ performance.measure() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์
์ ์์๊ณผ ๋์ ํ์ํ ๋ค์ ์์ ์๊ฐ์ ์ธก์ ํ ์ ์์ต๋๋ค.
์์:
performance.mark('transitionStart');
document.startViewTransition(() => {
// DOM ์
๋ฐ์ดํธ
performance.mark('transitionEnd');
performance.measure('transitionDuration', 'transitionStart', 'transitionEnd');
const duration = performance.getEntriesByName('transitionDuration')[0].duration;
console.log(`์ ํ ์๊ฐ: ${duration}ms`);
});
์ค์ ์ฌ๋ก ๋ฐ ์ผ์ด์ค ์คํฐ๋
CSS View Transitions๋ฅผ ์ต์ ํํ ์ค์ ์ฌ๋ก ๋ฐ ์ผ์ด์ค ์คํฐ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์ด์ปค๋จธ์ค ์ํ ํ์ด์ง ์ ํ
์ํ ๋ชฉ๋ก ํ์ด์ง์ ์ํ ์์ธ ํ์ด์ง ๊ฐ์ ์ ํ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด CSS View Transitions๋ฅผ ์ฌ์ฉํ๋ ์ด์ปค๋จธ์ค ์น์ฌ์ดํธ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ์ฒ์์๋ ํนํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ ํ์ด ๋๋ฆฌ๊ณ ๋ฒ๋ฒ ๊ฑฐ๋ ธ์ต๋๋ค. ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ ๊ฒฐ๊ณผ, ์ฃผ๋ ๋ณ๋ชฉ ํ์์ ๋ง์ ์์ ์ ํ ์์(๊ฐ ์ํ ํญ๋ชฉ์ด ๊ฐ๋ณ์ ์ผ๋ก ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌ๋จ)์ ์ํ ์ด๋ฏธ์ง์ ๋ณต์ก์ฑ ๋๋ฌธ์ธ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ต์ ํ๊ฐ ๊ตฌํ๋์์ต๋๋ค:
- ์ ์ฒด ์ํ ํญ๋ชฉ ๋์ ์ํ ์ด๋ฏธ์ง์ ์ ๋ชฉ๋ง ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ ํ ์์์ ์๋ฅผ ์ค์์ต๋๋ค.
- ์ํ ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ ์ ์ ํ ์ด๋ฏธ์ง ํ์์ ์ฌ์ฉํ์ฌ ์ต์ ํํ์ต๋๋ค.
- ๋ ์ด์์์ ์ ๋ฐํ๋ ์์ฑ ๋์ CSS ๋ณํ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ์ ๋ชฉ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ์ต๋๋ค.
์ด๋ฌํ ์ต์ ํ๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์์ผฐ๊ณ , ์ ํ์ด ํจ์ฌ ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ์ข์์ก์ต๋๋ค.
2. ๋ด์ค ์น์ฌ์ดํธ ๊ธฐ์ฌ ์ ํ
ํ ๋ด์ค ์น์ฌ์ดํธ๋ ํํ์ด์ง์ ๊ฐ๋ณ ๊ธฐ์ฌ ํ์ด์ง ๊ฐ์ ์ ํ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด CSS View Transitions๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๊ธฐ ๊ตฌํ์ ๊ธฐ์ฌ ๋ด์ฉ์ ๋ง์ ํ ์คํธ์ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋์ด ์์ด ๋๋ ธ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ต์ ํ๊ฐ ๊ตฌํ๋์์ต๋๋ค:
- CSS Containment๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์ฌ ๋ด์ฉ์ ๋ ๋๋ง์ ๊ฒฉ๋ฆฌํ์ต๋๋ค.
- ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ์ด๋ฏธ์ง์ ์ง์ฐ ๋ก๋ฉ(lazy loading)์ ๊ตฌํํ์ต๋๋ค.
- ์ ํ ์ค ํฐํธ ๋ฆฌํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํฐํธ ๋ก๋ฉ ์ ๋ต์ ์ฌ์ฉํ์ต๋๋ค.
์ด๋ฌํ ์ต์ ํ๋ ํนํ ๋์ญํญ์ด ์ ํ๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ์ข์ ์ ํ์ ๊ฐ์ ธ์์ต๋๋ค.
๊ฒฐ๋ก
CSS View Transitions๋ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ํฅ๋ฏธ๋ก์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ํ์ด ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ์ข๋๋ก ํ๋ ค๋ฉด ์ฑ๋ฅ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ํ ์์ ์ฒ๋ฆฌ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ์ ์ดํดํ๊ณ ์ด ๊ธ์์ ์ค๋ช ํ ์ต์ ํ ์ ๋ต์ ๊ตฌํํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฌ์ํ์ง ์์ผ๋ฉด์ ๋ฉ์ง ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํญ์ ๋ค์ํ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์์ ๋ทฐ ์ ํ์ ํ ์คํธํ์ฌ ์ฌ๋ฌ ํ๋ซํผ์์ ์ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ๊ฐ์ ํ ๋ถ๋ถ์ ์๋ณํ์ธ์. ์ ๋๋ฉ์ด์ ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์ต์ ํํจ์ผ๋ก์จ ์ง์ ์ผ๋ก ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค.